/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package session;

import entities.Utilisateur;
import java.util.List;
import javax.ejb.Stateless;
import javax.ejb.LocalBean;
import javax.persistence.EntityExistsException;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author Nordinator
 */
@Stateless
@LocalBean
public class UtilisateurManager {
    @PersistenceContext(unitName = "Project-MP3-Rumble-ejbPU")
    private EntityManager em;

    public void persist(Object object) {
        em.persist(object);
    }

    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")
    public List<Utilisateur> getAllUtilisateur() {
        Query query = em.createNamedQuery("Utilisateur.findAll");
        return query.getResultList();
    }
    
    /**
     * Methode de recherche d'un user
     * @param name
     * @return 
     */
    public Utilisateur getAUser(String name, String password){
        try{
            Query query = em.createNamedQuery("Utilisateur.findByName");
            query.setParameter("name", name);
            List<Utilisateur> list = query.getResultList();
            return list.get(0);
        }catch(ArrayIndexOutOfBoundsException e){
            System.out.println("Out of array : UtilisateurManager.getAUser(string,string)");
        }catch(Exception e){
            System.out.println("Another exception!");
        }
        return null;
    }
    
    /**
     * Mathode d'ajout d'utilisateur
     * @param name
     * @param password
     * @return 
     */
    public int createUtilisateur(String name, String password){
        try{
            Utilisateur user = new Utilisateur(name, password);
            em.persist(user);
            return 1;
        }catch(EntityExistsException e){
            System.out.println("Login deja utilisé !");
            return 0;
        }
    }
    
    /**
    public void addNewListLecture(String name, int id){
        try{
            Query query = em.createNamedQuery("Album.findByName");
            query.setParameter("name", name);
            List<Utilisateur> list = query.getResultList();
            Utilisateur user = list.get(0);
            user.ajouterListeLecture(id);
            em.merge(user);
        }catch(IndexOutOfBoundsException e){
            e.printStackTrace();
            System.out.println("Le login que vous avez insérer n'existe pas.");
        }catch(Exception e){
            e.printStackTrace();
        }
    }*/

    public Utilisateur update(Utilisateur utilisateur) {
        return em.merge(utilisateur);
    }
    
    public void Test(){
        this.createUtilisateur("Nourdine", "n");
        this.createUtilisateur("Toto", "toto");
        this.createUtilisateur("tata", "tata");
        this.createUtilisateur("titi", "titi");
    }
}
